<?xml version="1.0"?>
<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:a="http://www.w3.org/2005/Atom"
                xmlns:f="http://xmlns.4suite.org/ext"
                xmlns:dyn="http://exslt.org/dynamic"
                xmlns:ac="http://ionrock.org/ns/app-client"
                xmlns:xh="http://www.w3.org/1999/xhtml"
                xmlns:exsl="http://exslt.org/common"
                xmlns="http://www.w3.org/1999/xhtml"
                extension-element-prefixes="f exsl dyn" 
                exclude-result-prefixes="a ac xsl xh #default f exsl dyn">

  <xsl:param name="ac:new_entry" />
  <xsl:param name="ac:atom_updated"><xsl:value-of select="f:strftime('%Y-%m-%dT%H:%M:%SZ')" /></xsl:param>

  <xsl:template match="/">
    <xsl:apply-templates />
  </xsl:template>

  <xsl:template match="node()">
    <xsl:copy>
      <xsl:copy-of select="@* | text()" />
      <xsl:apply-templates />
    </xsl:copy>
  </xsl:template>
  
  <xsl:template match="a:*">
    <xsl:variable name="node-name" select="concat('a:', local-name())" />
    <xsl:variable name="copy-node" select="dyn:evaluate(concat('$ac:new_entry/a:entry/', $node-name))" />
    <xsl:choose>
      <xsl:when test="$copy-node">
        <xsl:element name="{$node-name}">
          <xsl:copy-of select="$copy-node/@*" />
          <xsl:value-of select="$copy-node" />
        </xsl:element>
      </xsl:when>
      <xsl:otherwise>
        <xsl:copy>
          <xsl:copy-of select="@*" />
          <xsl:apply-templates />
        </xsl:copy>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <xsl:template match="a:updated">
    <a:updated>
      <xsl:choose>
        <xsl:when test="string-length($ac:atom_updated) &gt; 0">
          <xsl:value-of select="$ac:atom_updated" />
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="f:strftime('%Y-%m-%dT%H:%M:%SZ')" />
        </xsl:otherwise>
      </xsl:choose>
    </a:updated>
  </xsl:template>
  
</xsl:stylesheet>